package com.zhunaer.entity;

import java.math.BigDecimal;
import java.util.Date;

/**
 * User 类代表系统中的用户实体，包含用户的基本信息、账户余额和创建时间等。
 */
public class User {
    /**
     * 用户的唯一标识符，用于在系统中唯一标识一个用户。
     */
    private Integer userId;

    /**
     * 用户的登录名，用于用户登录系统时的身份标识。
     */
    private String username;

    /**
     * 用户登录系统时使用的密码，经过适当的加密处理存储。
     */
    private String password;

    /**
     * 用户的真实姓名，用于显示和一些需要真实身份信息的场景。
     */
    private String realName;

    /**
     * 用户的联系电话号码，方便系统与用户进行沟通或用于身份验证等。
     */
    private String phone;

    /**
     * 用户账户的余额，使用 BigDecimal 类型以精确处理小数。
     */
    private BigDecimal balance;

    /**
     * 用户账户的创建时间，记录用户在系统中注册的时间。
     */
    private Date createdAt;

    /**
     * 获取用户的唯一标识符。
     *
     * @return 用户的唯一标识符
     */
    public Integer getUserId() {
        return userId;
    }

    /**
     * 设置用户的唯一标识符。
     *
     * @param userId 要设置的用户唯一标识符
     */
    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    /**
     * 获取用户的登录名。
     *
     * @return 用户的登录名
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置用户的登录名。
     *
     * @param username 要设置的用户登录名
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取用户的登录密码。
     *
     * @return 用户的登录密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置用户的登录密码。
     *
     * @param password 要设置的用户登录密码
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * 获取用户的真实姓名。
     *
     * @return 用户的真实姓名
     */
    public String getRealName() {
        return realName;
    }

    /**
     * 设置用户的真实姓名。
     *
     * @param realName 要设置的用户真实姓名
     */
    public void setRealName(String realName) {
        this.realName = realName;
    }

    /**
     * 获取用户的联系电话号码。
     *
     * @return 用户的联系电话号码
     */
    public String getPhone() {
        return phone;
    }

    /**
     * 设置用户的联系电话号码。
     *
     * @param phone 要设置的用户联系电话号码
     */
    public void setPhone(String phone) {
        this.phone = phone;
    }

    /**
     * 获取用户账户的余额。
     *
     * @return 用户账户的余额
     */
    public BigDecimal getBalance() {
        return balance;
    }

    /**
     * 设置用户账户的余额。
     *
     * @param balance 要设置的用户账户余额
     */
    public void setBalance(BigDecimal balance) {
        this.balance = balance;
    }

    /**
     * 获取用户账户的创建时间。
     *
     * @return 用户账户的创建时间
     */
    public Date getCreatedAt() {
        return createdAt;
    }

    /**
     * 设置用户账户的创建时间。
     *
     * @param createdAt 要设置的用户账户创建时间
     */
    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    /**
     * 返回该用户对象的字符串表示形式，包含了用户的主要属性信息。
     *
     * @return 用户对象的字符串表示
     */
    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", realName='" + realName + '\'' +
                ", phone='" + phone + '\'' +
                ", balance=" + balance +
                ", createdAt=" + createdAt +
                '}';
    }
}